第4章 文件搜索命令


4-1 文件搜索命令locate

文件搜索命令 locate

locate [文件名]

在后台数据库中按文件名搜索,搜索速度更快

数据库文件 /var/lib/mlocate,不实时更新,每天更新

updatedb强制更新database,即可搜索到当天的新建文件

默认不搜索/tmp等目录,可修改/etc/updatadb.conf配置文件参数,如不搜索的文件系统,文件类型,路径等。

缺点只可根据文件名搜索,但是搜索速度快

4-2 命令搜索命令

搜索命令的命令whereis

whereis [选项] [命令名]#搜索命令所在路径及帮助文件所在位置

-b  只查找可执行文件

-m  只查找帮助文件

which [命令名]#搜索命令所在路径及别名

两者都依赖环境变量path

path环境变量:系统搜索命令的路径

echo $PATH#查看环境变量

cd等shell内置的命令无法通过whereis和 which搜索到,搜索到的都是外来安装命令

4-3 find命令

find [搜索范围] [搜索条件]#搜索文件

e.g. find \ -name install.log

  1. 避免大范围搜索,会非常消耗系统资源
  2. find命令是在系统中搜索完全匹配的文件;如果需要匹配,需要是同通配符,通配符完全匹配

Linux通配符

  • *匹配任意内容
  • ?匹配任意字符
  • [ ]匹配括号中的任意字符

find /root -iname install.log#不区分大小写

find /root -user root#按所有人搜索(不常用)

find /root nouesr#查找没有所有者的文件

nouser的文件,除了系统内核产生的文件,如/proc,/sys中的文件,和外来文件,如u盘拷贝,其他都是垃圾文件

find /var/log -mtime +10#查找10天前修改的文件

-atime 文件访问时间

-mtime 修改文件内容时间

-ctime 改变文件属性

-10 10天内

10 10天当天

+10 10天前

find . -size 25k#查找当前目录下25KB的文件,.代表当前目录,也可写其他目录;KB为小写k,MB为大写M

+25k 大于25KB

25k 等于25KB

-25k 小于25KB

find . inam 262422#查找node

find /etc -size +20k -a -size -50k#查找/etc/目录下,大于20KB小于50KB的文件

-a and 逻辑与,两条件都满足

-o or 逻辑或,两条件满足一个即可

find /etc -size +20k -a -size -50k -exec ls -lh {}\;#查找/etc/目录下,大于20KB小于50KB的文件,并显示详细信息

#-exec [命令] {}\;对搜索结果执行命令

4-4 grep命令

搜索字符串命令grep

grep [选项] 字符串 文件名#在文件中匹配符合条件的字符串,返回整行

-i 忽略大小写

-v 排除指定的字符串

  • find命令在系统中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
  • grep命令在文件中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配